Refresh Aurva AIOStack website#20
Conversation
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughThe pull request redesigns the marketing site from AIOStack to Aurva, introducing three new landing pages (Platform, Solutions, Use cases), completely rewriting the homepage with runtime security messaging and interactive components, updating navigation and site structure, and refreshing branding and styling across all components. ChangesAurva Site Redesign and Rebrand
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/components/navigation/navbar.tsx (1)
104-134:⚠️ Potential issue | 🟠 Major | ⚡ Quick win
activeClassName="font-bold text-white"renders an invisible active state on the light home page.
NavMenuhas no awareness of the current surface color. TheactiveClassNameis hardcoded totext-white, which is invisible on the light cream navbar background (#F7F5EF). Any nav link that resolves as active while on/will appear blank to users.Pass the active class as a prop so the
Navbarcan supply the correct foreground color per context:🐛 Proposed fix
-export function NavMenu({ isSheet = false }) { +export function NavMenu({ isSheet = false, activeClassName = "font-bold text-white" }) { return ( <> {Navigations.map((item) => { const Comp = ( <Anchor key={item.title + item.href} - activeClassName="font-bold text-white" + activeClassName={activeClassName} ... >Then in
Navbar:-<NavMenu /> +<NavMenu activeClassName={isLightHome ? "font-bold text-[`#111411`]" : "font-bold text-white"} />🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/components/navigation/navbar.tsx` around lines 104 - 134, NavMenu currently hardcodes activeClassName="font-bold text-white" which is invisible on the light navbar; change NavMenu signature to accept an activeClassName prop (e.g. function NavMenu({ isSheet = false, activeClassName = "font-bold text-white" })) and use that prop in the Anchor instead of the hardcoded string, then update callers (notably Navbar) to pass an appropriate foreground class for the current surface (e.g. dark or light) when rendering <NavMenu ... />, leaving SheetClose and Anchor usage unchanged so active styling still applies to both sheet and inline menu items.
🧹 Nitpick comments (6)
docs/app/solutions/page.tsx (1)
10-43: ⚡ Quick winNo page-level
metadataexport — the Solutions page will inherit root layout metadata.The Platform, Solutions, and Use Cases pages all lack their own
export const metadatablocks. For SEO, each page should have a distinct<title>and<meta name="description">.✨ Example for Solutions page
+import type { Metadata } from "next" + +export const metadata: Metadata = { + title: "Solutions | Aurva", + description: "Secure sensitive data use across AI, identities, and runtime workflows.", +} + export default function SolutionsPage() {🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/app/solutions/page.tsx` around lines 10 - 43, Add a page-level metadata export to the Solutions page by defining and exporting a const named metadata that includes title and description strings (e.g., export const metadata = { title: 'Solutions — <Your Site>', description: 'Short SEO description...' }); place this export alongside the existing SolutionsPage component (referencing SolutionsPage to locate the file) so the page no longer inherits root metadata and provides distinct <title> and <meta name="description"> values for SEO.docs/app/platform/page.tsx (1)
12-61: ⚡ Quick winMissing
metadataexport for the Platform page.Same as Solutions and Use Cases — the page inherits root layout SEO metadata. Add a page-specific
metadataexport for a distinct<title>anddescription.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/app/platform/page.tsx` around lines 12 - 61, The Platform page is missing a page-specific metadata export; add an export named metadata (e.g., export const metadata = { title: 'Platform — Aurva', description: 'Runtime security for agentic data access — Aurva keeps agents, identities, data access, and downstream movement in one runtime context.' }) alongside the PlatformPage component so the page provides its own <title> and description instead of inheriting root layout SEO metadata.docs/app/layout.tsx (1)
13-17: ⚡ Quick winRename the
intervariable and--font-interCSS variable to reflect Poppins.The font loaded is
Poppins, but the variable is still namedinterand the CSS custom property is still--font-inter. Any downstream Tailwind config or CSS that references--font-interwill silently apply Poppins under the wrong label, making future font changes error-prone.♻️ Proposed fix
-const inter = Poppins({ - variable: "--font-inter", +const poppins = Poppins({ + variable: "--font-poppins", subsets: ["latin"], weight: ["300", "400", "500", "600", "700"], })And in the
<body>className:-<body className={`${inter.variable} font-regular overflow-x-hidden`}> +<body className={`${poppins.variable} font-regular overflow-x-hidden`}>🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/app/layout.tsx` around lines 13 - 17, The font variable and CSS custom property are misnamed—rename the imported/created variable `inter` to `poppins` (or similar) where Poppins is instantiated via Poppins(...) and change the CSS custom property `--font-inter` to `--font-poppins`; then update all usages (e.g., references to `inter.variable` in the <body> className and any Tailwind/CSS that references `--font-inter`) to use the new names so the symbol `Poppins`/function call, the variable `poppins`, and the CSS custom property `--font-poppins` remain consistent across the codebase.docs/app/page.tsx (2)
47-49: ⚡ Quick winImport
cnfrom@/lib/utilsinstead of defining it locally.A
cnutility already exists indocs/lib/utils.ts(line 57) that usesclsxandtwMergefor more robust class handling. The local definition indocs/app/page.tsx(lines 47-49) is a simpler subset. Since the localcnis used 27 times in this file, importing the project-level utility eliminates duplication and provides better functionality (automatic class merging, conflict resolution).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/app/page.tsx` around lines 47 - 49, Remove the local cn implementation and import the project-level utility from docs/lib/utils (exported as cn) instead: delete the local function cn(...) in page.tsx, add an import statement importing cn from "@/lib/utils" at the top of the file, and ensure all existing uses of cn in page.tsx continue to call the imported cn (which wraps clsx and twMerge for proper class merging/conflict resolution).
229-238: ⚡ Quick winMove
@keyframes customer-marqueetoglobals.cssfor consistency and explicit dependency clarity.The
<style jsx>pattern relies onstyled-jsxas a transitive dependency (not explicitly listed inpackage.json), which is atypical for Next.js 15 with Tailwind v4's PostCSS pipeline. Since your codebase already defines animations indocs/app/globals.css, move this keyframe there to maintain consistency with the rest of your project.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/app/page.tsx` around lines 229 - 238, Remove the inline <style jsx> `@keyframes` customer-marquee block from the page component and add the same `@keyframes` customer-marquee definition into your global stylesheet (globals.css) alongside the other animations; update the page to rely on the global animation by keeping any class names that reference "customer-marquee" but deleting the styled-jsx block so you no longer depend on styled-jsx transitively.docs/components/navigation/navbar.tsx (1)
14-36: ⚡ Quick winUse
cn()/tailwind-mergeinstead of bare string concatenation forclassNameoverrides.Both
PrimaryButtonandGhostButtonappend the caller'sclassNamevia template-literal concatenation. When the caller passes conflicting Tailwind classes — e.g.rounded-[10px](conflicts with the baserounded-full) orhover:bg-white(conflicts with the basehover:bg-white/10) — which rule wins is determined by CSS output order in the stylesheet, not by the position in theclassNamestring. This is fragile and non-obvious; the outcome can silently change across Tailwind builds.Since
SheetCloseand other shadcn/ui components are already in scope,cn()(which wrapsclsx+tailwind-merge) is almost certainly available in this project.♻️ Proposed refactor using `cn()`
+import { cn } from "@/lib/utils" function PrimaryButton({ children, href = "#", onClick, className = "" }: { ... }) { return ( <a href={href} onClick={onClick} - className={`inline-flex items-center justify-center rounded-full bg-[`#80CB51`] px-4 py-2 text-sm font-medium text-[`#07100B`] transition hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-[`#80CB51`] ${className}`} + className={cn("inline-flex items-center justify-center rounded-full bg-[`#80CB51`] px-4 py-2 text-sm font-medium text-[`#07100B`] transition hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-[`#80CB51`]", className)} > {children} </a> ); } function GhostButton({ children, href = "#", onClick, className = "" }: { ... }) { return ( <a href={href} onClick={onClick} - className={`inline-flex items-center justify-center rounded-full px-4 py-2 text-sm font-medium text-white/78 ring-1 ring-white/15 transition hover:bg-white/10 focus:outline-none focus:ring-2 focus:ring-[`#80CB51`] ${className}`} + className={cn("inline-flex items-center justify-center rounded-full px-4 py-2 text-sm font-medium text-white/78 ring-1 ring-white/15 transition hover:bg-white/10 focus:outline-none focus:ring-2 focus:ring-[`#80CB51`]", className)} > {children} </a> ); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/components/navigation/navbar.tsx` around lines 14 - 36, PrimaryButton and GhostButton currently concatenate the caller's className via template literals which is fragile for conflicting Tailwind utility classes; replace that concatenation by importing and using the project's cn() helper (which wraps clsx + tailwind-merge) and call cn(baseClassString, className) inside both PrimaryButton and GhostButton so incoming overrides are merged/resolved correctly (update the return JSX className for PrimaryButton and GhostButton to use cn(...) instead of the template literal and remove direct string interpolation).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/app/page.tsx`:
- Around line 170-181: Replace the inconsistent "AIOStack" branding with "Aurva"
in the hero copy and CTAs: update the paragraph node that currently reads
"AIOStack follows every agentic access path…" to use "Aurva" and change the
primary Button label from "Try AIOStack Free" to "Try Aurva Free" (keeping the
existing href to aurva.ai); also audit and correct other components mentioned
(RuntimeMatrix header, CategoryBand table row, Mechanism eyebrow, InstallSection
heading) so any occurrences of "AIOStack" are replaced with "Aurva" to keep
branding consistent across RuntimeMatrix, CategoryBand, Mechanism and
InstallSection.
- Around line 525-529: The copyCommand function currently awaits
navigator.clipboard.writeText without handling rejections, so if clipboard
access is denied the await throws and setCopied is never called; wrap the
writeText call in a try/catch inside copyCommand, call setCopied(true) only on
success, schedule setCopied(false) as now, and in the catch branch surface
failure feedback (e.g., set an error state or call an existing notify function)
so the user knows the copy failed; reference the copyCommand function,
navigator.clipboard.writeText, and setCopied state when making the changes.
In `@docs/app/platform/page.tsx`:
- Around line 53-56: Import Link from "next/link" and replace the bare <a
href="/solutions"> element with a Next.js <Link href="/solutions"> so navigation
uses client-side routing and prefetching; preserve the existing className,
children ("Explore solutions" and ArrowRight) and props used on the <a>, remove
the old href attribute, and add the new import at the top of the file (ensure
the symbol ArrowRight remains as a child of the Link).
In `@docs/app/solutions/page.tsx`:
- Around line 29-35: The links rendered in the grid all use a static
href="/use-cases" so every item navigates to the same page; update the data and
rendering to use a unique href per link by changing the items in the links array
to objects (e.g., { label, href }) and update the map callback in links.map to
use link.href for the anchor and link.label (or link.text) for the displayed
text (the elements referenced are links.map, the anchor's href and the link
variable inside the map); ensure keys remain unique (e.g., use link.href or a
separate id) and keep the ArrowRight rendering unchanged.
In `@docs/app/use-cases/page.tsx`:
- Around line 36-39: The internal navigation anchor using <a href="/solutions"
...> should be replaced with Next.js Link to enable client-side routing and
prefetching: import Link from "next/link", change the anchor to a <Link
href="/solutions"> element (applying the same className and children including
ArrowRight) or wrap the existing anchor with Link, and remove/bypass any plain
<a> usage for this internal route so that the ArrowRight component and className
remain intact and client-side navigation works.
---
Outside diff comments:
In `@docs/components/navigation/navbar.tsx`:
- Around line 104-134: NavMenu currently hardcodes activeClassName="font-bold
text-white" which is invisible on the light navbar; change NavMenu signature to
accept an activeClassName prop (e.g. function NavMenu({ isSheet = false,
activeClassName = "font-bold text-white" })) and use that prop in the Anchor
instead of the hardcoded string, then update callers (notably Navbar) to pass an
appropriate foreground class for the current surface (e.g. dark or light) when
rendering <NavMenu ... />, leaving SheetClose and Anchor usage unchanged so
active styling still applies to both sheet and inline menu items.
---
Nitpick comments:
In `@docs/app/layout.tsx`:
- Around line 13-17: The font variable and CSS custom property are
misnamed—rename the imported/created variable `inter` to `poppins` (or similar)
where Poppins is instantiated via Poppins(...) and change the CSS custom
property `--font-inter` to `--font-poppins`; then update all usages (e.g.,
references to `inter.variable` in the <body> className and any Tailwind/CSS that
references `--font-inter`) to use the new names so the symbol `Poppins`/function
call, the variable `poppins`, and the CSS custom property `--font-poppins`
remain consistent across the codebase.
In `@docs/app/page.tsx`:
- Around line 47-49: Remove the local cn implementation and import the
project-level utility from docs/lib/utils (exported as cn) instead: delete the
local function cn(...) in page.tsx, add an import statement importing cn from
"@/lib/utils" at the top of the file, and ensure all existing uses of cn in
page.tsx continue to call the imported cn (which wraps clsx and twMerge for
proper class merging/conflict resolution).
- Around line 229-238: Remove the inline <style jsx> `@keyframes` customer-marquee
block from the page component and add the same `@keyframes` customer-marquee
definition into your global stylesheet (globals.css) alongside the other
animations; update the page to rely on the global animation by keeping any class
names that reference "customer-marquee" but deleting the styled-jsx block so you
no longer depend on styled-jsx transitively.
In `@docs/app/platform/page.tsx`:
- Around line 12-61: The Platform page is missing a page-specific metadata
export; add an export named metadata (e.g., export const metadata = { title:
'Platform — Aurva', description: 'Runtime security for agentic data access —
Aurva keeps agents, identities, data access, and downstream movement in one
runtime context.' }) alongside the PlatformPage component so the page provides
its own <title> and description instead of inheriting root layout SEO metadata.
In `@docs/app/solutions/page.tsx`:
- Around line 10-43: Add a page-level metadata export to the Solutions page by
defining and exporting a const named metadata that includes title and
description strings (e.g., export const metadata = { title: 'Solutions — <Your
Site>', description: 'Short SEO description...' }); place this export alongside
the existing SolutionsPage component (referencing SolutionsPage to locate the
file) so the page no longer inherits root metadata and provides distinct <title>
and <meta name="description"> values for SEO.
In `@docs/components/navigation/navbar.tsx`:
- Around line 14-36: PrimaryButton and GhostButton currently concatenate the
caller's className via template literals which is fragile for conflicting
Tailwind utility classes; replace that concatenation by importing and using the
project's cn() helper (which wraps clsx + tailwind-merge) and call
cn(baseClassString, className) inside both PrimaryButton and GhostButton so
incoming overrides are merged/resolved correctly (update the return JSX
className for PrimaryButton and GhostButton to use cn(...) instead of the
template literal and remove direct string interpolation).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 47030f98-b0c6-4141-8051-0280c79d4fb7
⛔ Files ignored due to path filters (6)
docs/public/customer-logos/canso.svgis excluded by!**/*.svgdocs/public/customer-logos/instacart.svgis excluded by!**/*.svgdocs/public/customer-logos/meesho.svgis excluded by!**/*.svgdocs/public/customer-logos/razorpay.pngis excluded by!**/*.pngdocs/public/customer-logos/slice.pngis excluded by!**/*.pngdocs/public/customer-logos/smallest-ai.pngis excluded by!**/*.png
📒 Files selected for processing (10)
docs/app/layout.tsxdocs/app/page.tsxdocs/app/platform/page.tsxdocs/app/solutions/page.tsxdocs/app/use-cases/page.tsxdocs/components/navigation/footer.tsxdocs/components/navigation/logo.tsxdocs/components/navigation/navbar.tsxdocs/settings/navigation.tsdocs/settings/settings.ts
| <p className="mt-5 max-w-2xl text-[20px] font-light leading-8 text-[#2A2F2A] md:text-[26px] md:leading-10 lg:text-[28px]"> | ||
| AI agents can have the right permissions and still use sensitive data in the wrong context. | ||
| </p> | ||
| <p className="mt-5 max-w-xl text-base leading-7 text-[#686D64] md:text-lg"> | ||
| AIOStack follows every agentic access path from actor to identity to DB principal to sensitive data to destination, so teams can see when trusted access becomes risky. | ||
| </p> | ||
| <div className="mt-8 flex flex-wrap gap-3"> | ||
| <Button href="https://aurva.ai/#install">Try AIOStack Free</Button> | ||
| <Button onClick={onDemo} variant="secondary"> | ||
| Talk to an Engineer | ||
| </Button> | ||
| </div> |
There was a problem hiding this comment.
Branding inconsistency: "AIOStack" appears in the hero copy and CTA alongside "Aurva" messaging.
Line 174 reads "AIOStack follows every agentic access path…" and line 177 renders a button labeled "Try AIOStack Free" (linking to aurva.ai). The hero eyebrow, section headings, and Settings already use "Aurva", making this a direct contradiction in the most prominent section of the page.
Additional occurrences worth auditing: the RuntimeMatrix header (line 122), CategoryBand table row (line 432), Mechanism eyebrow (line 492–494), and InstallSection heading (line 535).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/app/page.tsx` around lines 170 - 181, Replace the inconsistent
"AIOStack" branding with "Aurva" in the hero copy and CTAs: update the paragraph
node that currently reads "AIOStack follows every agentic access path…" to use
"Aurva" and change the primary Button label from "Try AIOStack Free" to "Try
Aurva Free" (keeping the existing href to aurva.ai); also audit and correct
other components mentioned (RuntimeMatrix header, CategoryBand table row,
Mechanism eyebrow, InstallSection heading) so any occurrences of "AIOStack" are
replaced with "Aurva" to keep branding consistent across RuntimeMatrix,
CategoryBand, Mechanism and InstallSection.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Apurv Garg <126313294+apurv-aurva@users.noreply.github.com>
Summary by CodeRabbit
New Features
Style
Chores